package models

import (
	"time"

	"gorm.io/gorm"
)

// User 用户模型
type User struct {
	gorm.Model
	Address         string    `gorm:"uniqueIndex;size:42;not null" json:"address"`
	ParentID        string    `gorm:"size:42" json:"parentID"`        // 邀请人地址
	Ancestors       string    `gorm:"type:text" json:"ancestors"`     // 祖先地址，逗号分隔
	Score           int64     `gorm:"default:0" json:"score"`         // 积分
	Token           int64     `gorm:"default:0" json:"token"`         // 代币数量
	ClaimLevelToken int64     `gorm:"default:0" json:"claimLevelToken"` // 已领取的层级奖励
	TotalLevelToken int64     `gorm:"default:0" json:"totalLevelToken"` // 总共的层级奖励
	LastCheckIn     time.Time `json:"lastCheckIn"`                    // 上次领取时间
	LastCheck       time.Time `json:"lastCheck"`                      // 上次检查时间
}

// TableName 指定表名
func (User) TableName() string {
	return "users"
}

// UserInfo 用户信息响应结构
type UserInfo struct {
	User
	InviteeCount int64 `json:"inviteeCount"` // 邀请用户数
}

// SubUser 下级用户信息
type SubUser struct {
	Address     string    `json:"address"`     // 地址
	Token       int64     `json:"token"`       // 代币数量
	LastCheckIn time.Time `json:"lastCheckIn"` // 上次领取时间
} 

// Data 统计数据
type Data struct {
	RewardAmount int64 `json:"rewardAmount"` // 用户可以领取的token数量
	Hold int64 `json:"hold"` // 持有代币的用户数
	InterActiveCount int64 `json:"interActiveCount"` // 交互数量
	BusinessDay int64 `json:"businessDay"` // 营业日
	ReciveAirdrop int64 `json:"reciveAirdrop"` // 收到的空头数量
	InviteReward int64 `json:"inviteReward"` // 邀请获得的奖励
}